package cn.le.agent;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * 有了擦除,泛型可以表示没有任何意义的事物
 *
 * kind被存储为Class<T>,擦除也意味着它将存储为Class,没有任何参数,因此当在使用它时,Array.newInstance()实际上并未拥有
 * kind所蕴含的类型信息,因此不会生产具体的结果,所有必须转型
 *
 *
 */
public class ArrayMaker<T> {

    private Class<T> kind;

    public ArrayMaker(Class<T> kind)
    {
            this.kind = kind;
    }
    T[] create(int size)
    {
        //对于在泛型中创建数据,推荐使用Array.newInstance(kind,size);
        return (T[]) Array.newInstance(kind,size);
    }

    public static void main(String[] args) {

        ArrayMaker<String> stringMaker = new ArrayMaker<String>(String.class);
        String[] stringArray = stringMaker.create(9);
        System.out.println(Arrays.toString(stringArray));
    }

}

